home *** CD-ROM | disk | FTP | other *** search
/ Hottest 6 / Hottest 6 (1996)(PDSoft)[!].iso / software / videoutils / a-g / ami2d / test / srm4seg.rexx < prev   
OS/2 REXX Batch file  |  1978-11-24  |  4KB  |  198 lines

  1. /* simple solid rocket motor */
  2. options results
  3.  
  4. if ~show('ports', "AMI2D") then do
  5.     address command 'run ami2d:bin/ami2d'
  6.     do while ~show('ports', "AMI2D")
  7.     end
  8. end
  9.  
  10. address ami2d
  11.  
  12. call 'ami2d:rexx/pstrain'
  13.  
  14. if ~show('l', "rexxmathlib.library") then do
  15.     check = addlib('rexxmathlib.library',0,-30,0)
  16. end
  17.  
  18. pi = 3.141592654
  19. rb = 6.0
  20. ra = 1.0
  21. rs = 4.8
  22. w2 = 0.2
  23. h = 0.05
  24. E = 1500.0
  25. nu = 0.4900
  26. alp = 6.0e-6
  27. Ec = 10.0e6
  28. nuc = 0.3000
  29. alpc = 5.0e-5
  30. P = -1000.0
  31. Tref = 140
  32. To = 77
  33. T = 500
  34.  
  35. 'reset'
  36. 'problem(thermal)'
  37. 'iso(1,'E','nu',thermal,'alp','Tref')'
  38. 'iso(2,'Ec','nuc',thermal,'alpc','Tref')'
  39. 'therm(1,.5)'
  40. 'therm(2,1)'
  41. 'coord(cart)'
  42. a1 = asin(w2/ra)
  43. a2 = pi/4 - a1
  44. da = (a2 - a1)/16
  45. b1 = asin(w2/rs)
  46. b2 = pi/4 - b1
  47. db = (b2 - b1)/16
  48. x1 = ra*cos(a1)
  49. y1 = ra*sin(a1)
  50. x2 = rs
  51. y2 = w2
  52. g = 1.5
  53. i = line(x1,y1,x2,y2,g,1,21,1)
  54. xc = rs
  55. yc = 0.0
  56. i = arc(xc,yc,pi/2,0.0,w2,21,9,1)
  57. x1 = ra*cos(a1 + da)
  58. y1 = ra*sin(a1 + da)
  59. x2 = rs*cos(b1 + db)
  60. y2 = rs*sin(b1 + db)
  61. i = line(x1,y1,x2,y2,g,41,11,2)
  62. i = ltip(xc,yc,x2,y2,0.0,0.25,w2,rb,61,3,2)
  63. x1 = ra*cos(a1 + 2*da)
  64. y1 = ra*sin(a1 + 2*da)
  65. x2 = rs*cos(b1 + 2*db)
  66. y2 = rs*sin(b1 + 2*db)
  67. i = line(x1,y1,x2,y2,g,81,21,1)
  68. i = ltip(xc,yc,x2,y2,0.0,0.5,w2,rb,101,5,1)
  69. x1 = ra*cos(a1 + 3*da)
  70. y1 = ra*sin(a1 + 3*da)
  71. x2 = rs*cos(b1 + 3*db)
  72. y2 = rs*sin(b1 + 3*db)
  73. i = line(x1,y1,x2,y2,g,121,11,2)
  74. i = ltip(xc,yc,x2,y2,0.0,0.75,w2,rb,141,3,2)
  75. x1 = ra*cos(a1 + 4*da)
  76. y1 = ra*sin(a1 + 4*da)
  77. x2 = rs*cos(b1 + 4*db)
  78. y2 = rs*sin(b1 + 4*db)
  79. i = line(x1,y1,x2,y2,g,161,21,1)
  80. i = ltip(xc,yc,x2,y2,0.0,1.0,w2,rb,181,5,1)
  81. i = arc(0.0,0.0,pi/16,0.0,rb + h/2,190,3,2)
  82. i = arc(0.0,0.0,pi/16,0.0,rb + h,195,5,1)
  83.  
  84. x1 = ra*cos(a1 + 6*da)
  85. y1 = ra*sin(a1 + 6*da)
  86. x2 = rs*cos(3*pi/32)
  87. y2 = rs*sin(3*pi/32)
  88. i = line(x1,y1,x2,y2,g,201,11,2)
  89. x1 = x2
  90. y1 = y2
  91. x2 = rb*cos(3*pi/32)
  92. y2 = rb*sin(3*pi/32)
  93. i = line(x1,y1,x2,y2,1.0,221,3,2)
  94. x1 = x2
  95. y1 = y2
  96. x2 = (rb + h)*cos(3*pi/32)
  97. y2 = (rb + h)*sin(3*pi/32)
  98. i = line(x1,y1,x2,y2,1.0,225,2,2)
  99.  
  100. x1 = ra*cos(a1 + 8*da)
  101. y1 = ra*sin(a1 + 8*da)
  102. x2 = rs*cos(pi/8)
  103. y2 = rs*sin(pi/8)
  104. i = line(x1,y1,x2,y2,g,241,21,1)
  105. x1 = x2
  106. y1 = y2
  107. x2 = rb*cos(pi/8)
  108. y2 = rb*sin(pi/8)
  109. i = line(x1,y1,x2,y2,1.0,261,5,1)
  110. x1 = x2
  111. y1 = y2
  112. x2 = (rb + h)*cos(pi/8)
  113. y2 = (rb + h)*sin(pi/8)
  114. i = line(x1,y1,x2,y2,1.0,265,3,1)
  115.  
  116. do j=1 to 14
  117.     n = j*2 - 1
  118.     'quad8('j',1,'n','n + 2','n + 82','n + 80','n + 1','n + 42','n + 81','n + 40')'
  119.     'press('j',1,'P')'
  120. end
  121. do j=1 to 14
  122.     n = j*2 + 79
  123.     'quad8('j + 20',1,'n','n + 2','n + 82','n + 80','n + 1','n + 42','n + 81','n + 40')'
  124. end
  125. 'quad8(35,2,187,189,199,197,188,194,198,192)'
  126. 'quad8(36,2,185,187,197,195,186,192,196,190)'
  127. do j=1 to 12
  128.     n = j*2 + 159
  129.     'quad8('j + 40',1,'n','n + 2','n + 82','n + 80','n + 1','n + 42','n + 81','n + 40')'
  130. end
  131. 'quad8(53,2,265,185,195,267,225,190,227,266)'
  132.  
  133. do j=1 to 41 by 20
  134.     'press('j',4,'P')'
  135. end
  136. do j=41 to 52
  137.     'slope('j',3,0.0)'
  138. end
  139. 'slope(53,4,0.0)'
  140. do j=29 to 189 by 40
  141.     'dispy('j',0.0)'
  142. end
  143. 'dispy(194,0.0)'
  144. 'dispy(199,0.0)'
  145.  
  146. do j=1 to 29
  147.     'temp('j','T')'
  148. end
  149. do j=195 to 199
  150.     'temp('j','To')'
  151. end
  152. 'temp(227,'To')'
  153. 'temp(267,'To')'
  154. do j=41 to 241 by 40
  155.     'temp('j','T')'
  156. end
  157. exit
  158.  
  159. line:
  160. arg xa,ya,xb,yb,gg,i1,n,di
  161.  
  162. n1 = di*(n - 1)
  163. do i=0 to n1  by di
  164.     j = i1 + i
  165.     xn = xa + (xb-xa)*pow(i/n1,gg)
  166.     yn = ya + (yb-ya)*pow(i/n1,gg)
  167.     'node('j','xn','yn')'
  168. end
  169. return j
  170.  
  171. arc:
  172. arg cx,cy,aa,ab,r1,i1,n,di
  173.  
  174. n1 = di*(n - 1)
  175. do i=0 to n1  by di
  176.     j = i1 + i
  177.     an = aa + (ab-aa)*i/n1
  178.     xn = r1*cos(an) + cx
  179.     yn = r1*sin(an) + cy
  180.     'node('j','xn','yn')'
  181. end
  182. return j
  183.  
  184. ltip:
  185. arg xc,yc,x1,y1,ab,fn,w2,rb,i1,n,di
  186.  
  187. xa = w2*cos(ab + pi/4) + xc
  188. ya = w2*sin(ab + pi/4) + yc
  189. xb = rb*cos(ab + pi/16)
  190. yb = rb*sin(ab + pi/16)
  191. xx = xa + (xb-xa)*fn
  192. yy = ya + (yb-ya)*fn
  193. i = line(x1,y1,xx,yy,1.0,i1,n,di)
  194. rr = sqrt(xx*xx + yy*yy)
  195. aa = atan(yy/xx)
  196. i = arc(0.0,0.0,aa,ab,rr,i,n,di)
  197. return i
  198.